1. Field of Invention
The present invention relates generally to the art of a browser based web interface for controlling and displaying information for a Storage Area Network (SAN).
2. Description of Related Art
A Storage Area Network (SAN) often connects multiple servers to a centralized pool of disk storage. A SAN can treat all the storage as a single resource, improving disk maintenance and backups. In some SANs, the disks themselves can copy data to other disks for backup without any computer processing overhead. The SAN network allows data transfers between computers and disks at a high peripheral channel speeds, with Fibre Channel as a typical high-speed transfer technology, as well as SSA (Serial Storage Architecture) and ESCON channels. SANs can be centralized or distributed; a centralized SAN connects multiple servers to a collection of disks, while a distributed SAN typically uses one or more Fibre Channel or SCSI switches to connect nodes. Over long distances, SAN traffic can be transferred over ATM, SONET or dark fiber. A SAN option is IP storage, which enables data transfer via IP over fast Gigabit Ethernet locally or via the Internet.
A scripting language is a high-level programming or command language that is interpreted rather than compiled. JavaScript is widely used scripting language used on Web pages. JavaScript is an object oriented programming (OOP) scripting language supported in Web browsers. JavaScript adds interactive functions to HTML pages. On the client, JavaScript is maintained as source code embedded into an HTML page. JavaScript is compiled into bytecode (intermediate language), similar to Java or C# programs. JavaScript is used in client side scripting languages to run dynamic web pages. JavaScript is often used to refer to ECMAScript or JScript, and this convention will be adhered to herein, as well as referring to any derivative of a scripting language based on ECMAScript, e.g., ActionScript.
A dynamic web page is a web page that changes interface behavior depending on user input and the presence of client-side and/or server side scripting, and stands in contrast to a static web page, that shows the same information to all users. Dynamic HTML is either a general term for HTML web pages that are customized for each user, or, is a combination of HTML enhancements, scripting language and interface that are used to deliver animations, interactions and dynamic updating on web pages. Two major elements of dynamic HTML are the ECMAScript language and the DOM object model. DOM is an interface that presents the HTML document to the programmer as an object model for ease in updating.
Ajax (Asynchronous JavaScript And XML) is a group of inter-related web development techniques for creating interactive web applications. A characteristic feature is exchanging small amounts of differential data between a web page and a web server rather than reloading the entire web page. JavaScript is the scripting language in which Ajax function calls are made, as well as using DOM (Document Object Model, a platform and language-independent object model for representing HTML or XML formats), HTML/XHTML/XML, CSS (Cascading Style Sheets), and an XMLHttpRequest object, to exchange data asynchronously with a Ajax web server to request and return data without having to reload and marshal loosely coupled web pages as much, relying on “load on demand”. Ajax consequently also results in smaller bandwidth usage and quicker response time for a user of a web browser due to smaller network latency. The JavaScript function making AJAX possible is the XMLHTTPRequest object, which was added to the JavaScript runtime module in various Web browsers; it was first available in IE 5, Mozilla 1.0, Safari 1.2 and Opera 8. The XMLHTTPRequest object returns the data formatted in a DOM document; it can also be returned as just a string, whether in XML structure or just text.
JSON (JavaScript Object Notation) is a format for exchanging structured data, such as in serialization, and is often used in Ajax programming in lieu of the XML format.
Delegates are used to encapsulate functions in object oriented programming (OOP) into callable functions, akin to “function pointers” in C and C++. Delegates are type-safe, allowing errors to be caught more easily. Delegates can be used as functors, that implement functionality depending on the signature of the declared delegate. Delegates can be used as callback functions and function pointers in C/C++, and as event handing in C#. In an OOP language like C#, any class can publish a set of events, using delegates, that another class can subscribe to, with the originator classes defining one or more callback functions that one piece of code can define and another can implement. In C# an event receiver (the ‘member function’) can subscribe to events published by an ‘instance’ object, e.g. a button click, and execute code in response to the button click, so long as the instance and member functions are linked by the delegate convention. By way of example, two windows, “MyWindow1” and “MyWindow2”, forming instances, can have a button on them that is an instance object, that, when clicked, each call a member function “ButtonClick” that performs some function in response to the button click in either of the two windows. There is no need to directly link the event receiver and the event publisher classes to one another using explicit names, rather, so long as the event receiver class subscribes to the event publisher class in accordance with the delegate model convention, communication can occur ‘behind the scenes’. This generally can be termed a delegate model, or event publisher/event subscriber (“pub-sub”) model.
In OOP, a mediator pattern is a software design pattern that provides a unified interface to a set of interfaces in a subsystem, typically through classes. A mediator pattern was one of the software design patterns described by the so-called “Gang-Of-Four” of Gamma et al. in Design Patterns: Elements of Reusable Object-Oriented Software (1994). For example, if a program is made up of a large number of classes, with logic and computation distributed among these classes, a mediator class can be the only class that has detailed knowledge of the methods of other classes. The other classes would send messages to the mediator when needed and the mediator would pass message to any other classes. The mediator class promotes a looser coupling between the classes.
PHP (PHP Hypertext Preprocessor) is a scripting language used to create dynamic Web pages, with syntax from C, Java and Perl. PHP code is embedded within HTML pages for server side execution, and is commonly used to extract data out of a database and present it on the Web page. PHP can be compared to other server-side scripting languages like Microsoft's ASP.NET or Sun Microsystems' JavaServerPages and mod perl, which provide dynamic content to the client from a web server.
In the prior art there exists, even after the advent of Ajax, a need to better control data on the browser (client) side, using JavaScript code and to encapsulate portions of a web application into separate objects. Furthermore, there is a need to better decouple all of this JavaScript code and the corresponding objects from each other, and to encapsulate portions of a web application into separate objects, in order to maximize the reuse and recombination of these objects. Further, due to the network latency between client and server, there is a need to make the response times of the application to user input on the order of milliseconds, to make the web applications respond like desktop applications. This response time is very difficult to achieve if the response requires new components (tabulated data, data in trees, buttons, graphics, and the like) to be shown on a page. Finally, there is a need to use such a scheme for controlling and displaying information for a Storage Area Network (SAN).
Thus what is lacking in the prior art is a method and apparatus for an improved system employing a decoupled OOP client side scripted web browser-based system to control and display information for a SAN, such as taught in the present invention.